package com.eltsistemas.os.controller.pessoa;

import org.hibernate.Session;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.eltsistemas.adapter.Adapter;
import com.eltsistemas.adapter.Calendario;
import com.eltsistemas.hibernate.HibernateUtil;
import com.eltsistemas.os.dao.pessoa.ClienteDao;
import com.eltsistemas.os.dao.veiculo.CilindradaDao;
import com.eltsistemas.os.modelo.pessoa.Cliente;
import com.eltsistemas.os.modelo.veiculo.Cilindrada;

@Controller
@RequestMapping("/cliente")
public class ClienteController {

	
	@RequestMapping("/adiciona")
	public String adiciona(Cliente cliente, String data)
	{
		Session session = new HibernateUtil().getSession();
		session.beginTransaction();
		
		ClienteDao daoCliente = new ClienteDao(session);
		
		try
		{
			cliente.setDataCadastro( new Calendario().getData(data) );
			daoCliente.adiciona(cliente);
			session.close();
			return "redirect:lista";
		}
		catch(Exception e)
		{
			return "redirect:lista?valor=true";
		}
			
	}
	
	@RequestMapping("/lista")
	public String lista(Model model, boolean valor)
	{
		Session session = new HibernateUtil().getSession();
		session.beginTransaction();
		
		ClienteDao daoCliente = new ClienteDao(session);	
		model.addAttribute("clientes", daoCliente.lista());
		model.addAttribute("dataPadrao", new Calendario().getDataAtual());
		model.addAttribute("estados", new Adapter().getEstados());
		session.close();
		return "cliente";
	}
	
	@RequestMapping("/alterado")
	public String alterar(Cliente cliente)
	{
		Session session = new HibernateUtil().getSession();
		session.beginTransaction();
		
		ClienteDao daoCliente = new ClienteDao(session);
		
		try
		{
			daoCliente.altera(cliente);
			session.close();
			return "redirect:lista";
		}
		catch(Exception e)
		{
			return "redirect:lista?valor=true";
		}
			
	}
	
	
	@RequestMapping("/remover")
	public String remover(Cliente cliente)
	{

		Session session = new HibernateUtil().getSession();
		session.beginTransaction();

		ClienteDao daoCliente = new ClienteDao(session);	
		daoCliente.remover( cliente );
		
		session.close();
		
		return "redirect:lista";
	}
	

}
